'use strict';

/**
 * This is a fallback file for the Django JavaScript internationalization library if the language gettext catalog
 * is not available.
 */

(function(globals) {
    const django = globals.django || (globals.django = {});

    /* gettext library */
    if (!django.jsi18n_initialized) {
        django.catalog = django.catalog || {};

        django.pluralidx = function(n) {
            const v = (n != 1);
            if (typeof v === 'boolean') {
                return v ? 1 : 0;
            } else {
                return v;
            }
        };

        django.gettext = function(msgid) {
            const value = django.catalog[msgid];
            if (typeof value === 'undefined') {
                return msgid;
            } else {
                return (typeof value === 'string') ? value : value[0];
            }
        };

        django.ngettext = function(singular, plural, count) {
            const value = django.catalog[singular];
            if (typeof value === 'undefined') {
                return (count == 1) ? singular : plural;
            } else {
                return value.constructor === Array ? value[django.pluralidx(count)] : value;
            }
        };

        django.gettext_noop = function(msgid) {
            return msgid;
        };

        django.pgettext = function(context, msgid) {
            let value = django.gettext(context + '\x04' + msgid);
            if (value.includes('\x04')) {
                value = msgid;
            }
            return value;
        };

        django.npgettext = function(context, singular, plural, count) {
            let value = django.ngettext(context + '\x04' + singular, context + '\x04' + plural, count);
            if (value.includes('\x04')) {
                value = django.ngettext(singular, plural, count);
            }
            return value;
        };

        django.interpolate = function(fmt, obj, named) {
            if (named) {
                return fmt.replace(/%\(\w+\)s/g, function(match) {
                    return String(obj[match.slice(2, -2)])
                });
            } else {
                return fmt.replace(/%s/g, function(match) {
                    return String(obj.shift())
                });
            }
        };

        /* formatting library */
        django.formats = {
            DATETIME_FORMAT: 'N j, Y, P',
            DATETIME_INPUT_FORMATS: [
                '%Y-%m-%d %H:%M:%S',
                '%Y-%m-%d %H:%M:%S.%f',
                '%Y-%m-%d %H:%M',
                '%m/%d/%Y %H:%M:%S',
                '%m/%d/%Y %H:%M:%S.%f',
                '%m/%d/%Y %H:%M',
                '%m/%d/%y %H:%M:%S',
                '%m/%d/%y %H:%M:%S.%f',
                '%m/%d/%y %H:%M',
                '%Y-%m-%d'
            ],
            DATE_FORMAT: 'N j, Y',
            DATE_INPUT_FORMATS: [
                '%Y-%m-%d',
                '%m/%d/%Y',
                '%m/%d/%y'
            ],
            DECIMAL_SEPARATOR: '.',
            FIRST_DAY_OF_WEEK: 0,
            MONTH_DAY_FORMAT: 'F j',
            NUMBER_GROUPING: 3,
            SHORT_DATETIME_FORMAT: 'm/d/Y P',
            SHORT_DATE_FORMAT: 'm/d/Y',
            THOUSAND_SEPARATOR: ',',
            TIME_FORMAT: 'P',
            TIME_INPUT_FORMATS: [
                '%H:%M:%S',
                '%H:%M:%S.%f',
                '%H:%M'
            ],
            YEAR_MONTH_FORMAT: 'F Y'
        };

        django.get_format = function(format_type) {
            const value = django.formats[format_type];
            if (typeof value === 'undefined') {
                return format_type;
            } else {
                return value;
            }
        };

        /* add to global namespace */
        globals.pluralidx = django.pluralidx;
        globals.gettext = django.gettext;
        globals.ngettext = django.ngettext;
        globals.gettext_noop = django.gettext_noop;
        globals.pgettext = django.pgettext;
        globals.npgettext = django.npgettext;
        globals.interpolate = django.interpolate;
        globals.get_format = django.get_format;

        django.jsi18n_initialized = true;
    }
}(this));
